关于python的sys模块sys.argv[0]、sys.argv[1]、sys.argv[2]的探讨 | 您所在的位置:网站首页 › open class words是什么意思 › 关于python的sys模块sys.argv[0]、sys.argv[1]、sys.argv[2]的探讨 |
今天有刚学python的朋友问我他的python怎么运行报错 他的源代码是: import sys #导入sys模块 input_file = sys.argv[1] output_file = sys.argv[2] with open(input_file,'r',newline='') as filereader: with open(output_file,'w',newline='') as filewriter: header = filereader.readline() header = header.strip() header_list = header.split(',') print(header_list) for row in filereader: row = row.strip(',') row_list = row.split(',') print(row_list) filewriter.write(','.join(map(str,row_list))+'\n')
我也不知道源代码错还是对,但是他运行直接运行py文件,之后就不用想报错啊 input_file = sys.argv[1] IndexError: list index out of range原因是input_file 是其读取文件的文件名没有输入,但这个是由sys.argv[1]接受,所以会报错。 下面说明python的sys模块sys.argv[0]、sys.argv[1]、sys.argv[2]是什么意思、该怎么理解? 看一下python代码: import sys test = sys.argv[0] test1 = sys.argv[1] test2 = sys.argv[2] print(test) print(test1) print(test2)运行这个py文件,直接运行也会报错 然后我们这样运行 会打印出信息并不会报错这是为什么尼? test打印的信息是:文件路径 test1打印的信息是:111 test2打印的信息是:222 这才知道sys.argv[0]接收的是文件名(如果运行文件和运行终端不在同一路径下会接收其的路径及文件名) sys.argv[1] 接收的的在终端传入的第一个参数 sys.argv[1]接收的的在终端传入的第二个参数 在看下面代码,进一步进行了解 import sys list1 = ["111","222","333"] print(list1) print(list1[0]) list2 = sys.argv print(list2) print(list2[1]) print(sys.argv[1])采用上述方法运行,会有如下图结果 这才恍然大悟原来sys模块sys.argv是个列表,而sys.argv[0]、sys.argv[1]、sys.argv[2]只不过是在取列表中的值,但这个列表有我们决定。 这才朋友的那个运行应该是这样的:test.py 1.txt 2.txt |
CopyRight 2018-2019 实验室设备网 版权所有 |